package tests;

import junit.framework.TestCase;

import modelo.*;

public class LaberintoTest extends TestCase {

	private Laberinto laberinto;
	
	/*
	 * Se realizan las pruebas en base a un laberinto conocido
	 */
	protected void setUp() throws Exception {
		super.setUp();
		
		laberinto = new Laberinto(new Juego(""), "original.lab");
	}
	
	/*
	 * Intenta dibujar el laberinto por consola 
	 */
	public void testDibujarPorConsolaOk() {
		
		System.out.println(laberinto);
		
		assertTrue(true);
	}
		
	/*
	 * Comprueba que la coordenada se extraiga bien
	 */
	public void testGetPosicionInicialDelTanque() {
		
		if (laberinto.getPosicionInicialDelTanque().equals(new Coordenada(14,23)))
			assertTrue(true);
		else fail();
	}
	
	/*
	 * Intenta atravesar una pared y recibe una posicion nula
	 */
	public void testAtravesarParedOk() {
		
		assertNull(laberinto.atravesar(new Coordenada(0,0)));
	}
	
	/*
	 * Atraviesa una casilla
	 */
	public void testAtravesarOk() {
		
		if (laberinto.atravesar(new Coordenada(1,1)).equals(new Coordenada(1,1)))
			assertTrue(true);
		else fail();
	}
	
	/*
	 * Proboca la excepcion al tratar de comerse una pared
	 */
	public void testComerPared() {

		try {
			laberinto.puedeComerse(new Coordenada(0,0));
			fail("permitio comerse una pared");
		}
		catch (CasillaNoComibleException e) {
			assertTrue(true);
		}
	}
}
